Avocado: A Secure In-Memory Distributed Storage System
タイトル: Avocado: A Secure In-Memory Distributed Storage System
著者: Maurice Bailleu, Dimitra Giantsidi, Vasilis Gavrielatos, Do Le Quoc, Vijay Nagarajan, Pramod Bhatotia
USENIX ATC '21
TL;DR
信頼されていないクラウド環境において、強力なセキュリティ、耐障害性、一貫性(線形性)、およびパフォーマンスを提供するセキュアなインメモリ分散ストレージシステム
単一ノードのエンクレーブの信頼性を、信頼されていないネットワーク上の分散環境にまで拡張することで、この限界を克服するとともに、悪意のある環境においてもレプリカの一貫性と耐障害性を担保
本文
背景
問い: どうすればTEEを活用して、信頼されていないクラウド環境のために、高性能、安全、耐故障性のインメモリ分散KVSを設計することができるか
TEEが主に単一ノードシステムの限られたメモリ内の状態を保護するように設計されているため、TEEのセキュリティ特性が分散インフラストラクチャに自然に適用されない
インメモリ型分散KVSの特徴とTEE活用の難しさ
高性能なネットワークスタック上に構築されることが多くなっており、direct I/Oを用いてカーネルをバイパスするような設計が多いが、TEEフレームワークで採用されている著名なI/Oメカニズムは,非同期システムコールに基づいており,膨大なオーバーヘッドが発生
インメモリ型分散KVSはデータの複製を用いて耐障害性を保証する。一方で、TEEを活用する場合、従来の手法であるBFTプロトコルなどを採用する必要があり,実用的なシステムでは非常に高価なもの
nrryuya.icon > なぜBFTが必要になる?
安全な分散システムには,サーバとクライアント間の信頼を確立するためのスケーラブルな認証メカニズムが必要である。TEEのRemote Attestationメカニズムは、単一のノードに対する信頼の根源を確立するために設計されており、分散システムの複数のノードにまたがる集団的な信頼の確立を提供することはできない。さらに、認証自体はIntel Attestation Service (IAS)をベースにしており、スケーラビリティとレイテンシーの問題がある
Avokado
信頼されていないクラウド環境において、強力なセキュリティ、耐障害性、一貫性(線形性)、およびパフォーマンスを提供するセキュアなインメモリ分散ストレージシステム
単一ノードのエンクレーブの信頼性を、信頼されていないネットワーク上の分散環境にまで拡張することで、この限界を克服するとともに、悪意のある環境においてもレプリカの一貫性と耐障害性を担保
eRPCとDPDKベースとしたネットワークスタックを採用することでカーネル経由でなくダイレクトI/Oが可能なため、高速かつコンテキストスイッチ(アプリケーションからEnclaveまたはEnclaveからアプリケーション)を軽減
cipepser.icon OS経由でECALL/OCALLするんじゃなくて、NICなどが直接ECALL/OCALLを呼ぶ理解で合ってます?
eRPCをベースとした、トランスポートおよびセッションレイヤを完全にサポートする、TEE用の初のダイレクトI/O RPCネットワークスタック
新しいパーティショニングされたスキップリストデータ構造に基づくセキュアなインメモリ単一ノードKVS、およびそれらのメモリ制限を回避し、TEEにおけるロックフリーのスケーラブルな同時更新をサポート
BFTと比べて高速
アーキテクチャ
4つのコンポーネントで構成
https://gyazo.com/7ec6329ac2780f3b020eaedd1658040a
Network stack
ネットワークスタックをエンクレイブ内のロジックとホスト内のバッファーに分割
パッケージ形式でfreshnessを保証
Sconeを用いてeRPCとDPDKのソフトウェアスタックをすべてエンクレイブのアドレス空間にマッピング データセンターネットワーク向けの高速かつ汎用的なRPCライブラリ
Data Plane Development Kitの略
高速パケット処理用のライブラリとネットワークドライバのセット
特定のアプリケーションに対してカーネル機能をバイパスした専用機能を提供することで、高速化が実現できる開発キット
メッセージ・バッファ、ネットワーク・プロトコル・バッファ、Tx(Transmitter)およびRx(Receiver)キューなどのネットワーキング・バッファは信頼されていないホスト・メモリに存在しており、ホスト・メモリをeRPCで必要となるNICとネットワーク・バッファの両方にマッピングし、2MBページのハグページ・メモリを利用することで、パケット処理を向上(ページ・ウォークの排除、データの局所性の利用、スワップの最小化、TLBのヒット率の向上など)
https://gyazo.com/32263c6fc6e9d1994be62ac7962e757a
Replication protocol
ABD(Avocado based on non-Byzantin)プロトコル
Non-Byzantinプロトコル
https://gyazo.com/77258a3ef6d1d75a4a38e5d7da19fc34
K: Key, V: Value, TS: TimeStamp
エンクレーブ内で動作することでごまかし(Equivocation)を防止
nrryuya.icon > 多重投票的な意味です
フォーク攻撃やロールバック攻撃に対する防御を保証
操作に関与する少なくとも1つのレプリカが同じ鍵に対する最新の操作を観測していることを保証するため、過半数のノードが各操作を承認する必要がある。これによりネットワークが分割されていても過半数のノードが同じパーティションにいる限り、livenessが保証される
BFTで必要とされる追加のブロードキャストラウンドを回避することで、性能が大幅に向上し、また、f故障を許容するために必要なノード数も減少
https://gyazo.com/9b0f44d6bf5931ef23a6601db4385b4c
CAS(Conguration and Attestation Service)
TEEを使ってリモートホストに配置されたコードやデータの整合性を確保
LAS経由でAttestation実施
LASとは
IASのような機構を持つ
AvocadoノードのLocal Attestationを行い、CASが検証可能な認証情報を提供
従来の認証(Remote Attestation)のオーバーヘッドを大幅に削減
すべてのノードが攻撃者などに操作されていないことを確認してから、Avocadoを実行するためのコンフィギュレーションと秘密(secrets)を提供
jkcomment.icon secretsとは
Avocadoの各ノードは、CASの証明書が有効な場合のみ、他のノードと通信が可能
Single-node KVS
EPCを節約する高速なメモリ内KVデータ構造(スキップリスト)
https://gyazo.com/b1e97243c1c55c783750dd5c0b5e9ff5
Key: 高速検索のためにエンクレイブに格納
Meta data: キーから分割してアトミックに更新
Value: データは暗号化され、信頼性と整合性が保護された状態で信頼されていないホスト・メモリに保存することでEPCの負担を軽減
評価
環境
5x Intel i9-9900K (@3.60GHz, 8 cores, 16 HT)
Intel NIC XL710 (40Gb/s, QSFP+)
Performance
https://gyazo.com/40bff88b05ead1b964f071a23f915c4b
全体的にBFTを上回っている
Scalability
https://gyazo.com/5165318d87778ac584375792809dfe6b
ノードの数に応じてスケールアップ
参考